MacOS seems to be very greedy when allowing access to shared memory.

By default, it has the following:

	shmmax: 4194304	(max shared memory segment size)
	shmmin:       1	(min shared memory segment size)
	shmmni:      32	(max number of shared memory identifiers)
	shmseg:       8	(max shared memory segments per process)
	shmall:    1024	(max amount of shared memory in pages)

4MB for a segment size, with only 8 segments per process and globally, just 32.
That makes things very difficult when running unit tests for IPC::Shareable, as
there could be a couple dozen segments in use at any time, and when adding new
features, they are bound to leak segments all over the place until things are
stabilized and polished.

On my MacOS Tahoe system, I add the following data to the
"/Library/LaunchDaemons/com.local.shmem.plist" file, then set it to root/wheel,
with 644 perms.

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
        <dict>
            <key>Label</key>
                <string>com.local.shmem</string>
            <key>ProgramArguments</key>
                <array>
                    <string>/usr/local/bin/set-shm.sh</string>
                </array>

            <key>RunAtLoad</key>
                <true/>

            <key>StandardOutPath</key>
                <string>/var/log/com.local.shmem.out</string>

            <key>StandardErrorPath</key>
                <string>/var/log/com.local.shmem.err</string>
        </dict>
    </plist>

Then in /usr/local/bin/set-shm.sh, I have (with root:wheel, 755):

    #!/bin/sh
    /usr/sbin/sysctl -w kern.sysv.shmmni=128
    /usr/sbin/sysctl -w kern.sysv.shmmax=4194304
    /usr/sbin/sysctl -w kern.sysv.shmseg=256
    /usr/sbin/sysctl -w kern.sysv.shmall=262144
    /usr/sbin/sysctl -w kern.sysv.shmmin=1

You can attempt to load it live time:

    sudo launchctl kickstart -k system/com.local.shmem

If you get a permissions error, you may have to disable System Integrity
Protection:

    - Shutdown
    - Hold power button to power up and go into
      Recovery->Options->Utilities->Terminal
    - Run "csrutil disable"
    - Reboot into normal mode
    - Run "sudo launchctl kickstart -k system/com.local.shmem"
    - If successful, reboot into recovery again, and:
    - Run "csrutil enable"
    - Reboot normally

The SYSV settings should have taken now.